{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "PrioritizedExperienceReplayInOpenAIGym.ipynb",
      "version": "0.3.2",
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    }
  },
  "cells": [
    {
      "metadata": {
        "id": "-578TXDLZF47",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# Run this to install tensorflow version 1.9\n",
        "!pip install tensorflow==1.9"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "HnA-Zf8JqsL4",
        "colab_type": "code",
        "outputId": "70062eee-0733-4f72-b717-2aeec3d927b9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        }
      },
      "cell_type": "code",
      "source": [
        "import gym\n",
        "import random\n",
        "import numpy as np\n",
        "import tensorflow as tf\n",
        "from collections import deque\n",
        "print(\"Gym:\", gym.__version__)\n",
        "print(\"Tensorflow:\", tf.__version__)"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Gym: 0.10.11\n",
            "Tensorflow: 1.9.0\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "YHkYC1tmqsMB",
        "colab_type": "code",
        "outputId": "c3abd168-27fc-4f2c-be25-18194375bd0d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        }
      },
      "cell_type": "code",
      "source": [
        "env_name = \"CartPole-v0\"\n",
        "env = gym.make(env_name)\n",
        "print(\"Observation space:\", env.observation_space)\n",
        "print(\"Action space:\", env.action_space)"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Observation space: Box(4,)\n",
            "Action space: Discrete(2)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "79GCjcYYqsMG",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "class QNetwork():\n",
        "    def __init__(self, state_dim, action_size, tau=0.01):\n",
        "        tf.reset_default_graph()\n",
        "        self.state_in = tf.placeholder(tf.float32, shape=[None, *state_dim])\n",
        "        self.action_in = tf.placeholder(tf.int32, shape=[None])\n",
        "        self.q_target_in = tf.placeholder(tf.float32, shape=[None])\n",
        "        self.importance_in = tf.placeholder(tf.float32, shape=[None])\n",
        "        action_one_hot = tf.one_hot(self.action_in, depth=action_size)\n",
        "        \n",
        "        self.q_state_local = self.build_model(action_size, \"local\")\n",
        "        self.q_state_target = self.build_model(action_size, \"target\")\n",
        "        \n",
        "        self.q_state_action = tf.reduce_sum(tf.multiply(self.q_state_local, action_one_hot), axis=1)\n",
        "        self.error = self.q_state_action - self.q_target_in\n",
        "        self.loss = tf.reduce_mean(tf.multiply(tf.square(self.error), self.importance_in))\n",
        "        self.optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(self.loss)\n",
        "        \n",
        "        self.local_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=\"local\")\n",
        "        self.target_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=\"target\")\n",
        "        self.updater = tf.group([tf.assign(t, t + tau*(l-t)) for t,l in zip(self.target_vars, self.local_vars)])\n",
        "        \n",
        "    def build_model(self, action_size, scope):\n",
        "        with tf.variable_scope(scope):\n",
        "            hidden1 = tf.layers.dense(self.state_in, 100, activation=tf.nn.relu)\n",
        "            q_state = tf.layers.dense(hidden1, action_size, activation=None)\n",
        "            return q_state\n",
        "        \n",
        "    def update_model(self, session, state, action, q_target, importance):\n",
        "        feed = {self.state_in: state, self.action_in: action, self.q_target_in: q_target, self.importance_in: importance}\n",
        "        error, _, _ = session.run([self.error, self.optimizer, self.updater], feed_dict=feed)\n",
        "        return error\n",
        "        \n",
        "    def get_q_state(self, session, state, use_target=False):\n",
        "        q_state_op = self.q_state_target if use_target else self.q_state_local\n",
        "        q_state = session.run(q_state_op, feed_dict={self.state_in: state})\n",
        "        return q_state"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "EYKcRk3ZqsMJ",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "class PrioritizedReplayBuffer():\n",
        "    def __init__(self, maxlen):\n",
        "        self.buffer = deque(maxlen=maxlen)\n",
        "        self.priorities = deque(maxlen=maxlen)\n",
        "        \n",
        "    def add(self, experience):\n",
        "        self.buffer.append(experience)\n",
        "        self.priorities.append(max(self.priorities, default=1))\n",
        "        \n",
        "    def get_probabilities(self, priority_scale):\n",
        "        scaled_priorities = np.array(self.priorities) ** priority_scale\n",
        "        sample_probabilities = scaled_priorities / sum(scaled_priorities)\n",
        "        return sample_probabilities\n",
        "    \n",
        "    def get_importance(self, probabilities):\n",
        "        importance = 1/len(self.buffer) * 1/probabilities\n",
        "        importance_normalized = importance / max(importance)\n",
        "        return importance_normalized\n",
        "        \n",
        "    def sample(self, batch_size, priority_scale=1.0):\n",
        "        sample_size = min(len(self.buffer), batch_size)\n",
        "        sample_probs = self.get_probabilities(priority_scale)\n",
        "        sample_indices = random.choices(range(len(self.buffer)), k=sample_size, weights=sample_probs)\n",
        "        samples = np.array(self.buffer)[sample_indices]\n",
        "        importance = self.get_importance(sample_probs[sample_indices])\n",
        "        return map(list, zip(*samples)), importance, sample_indices\n",
        "    \n",
        "    def set_priorities(self, indices, errors, offset=0.1):\n",
        "        for i,e in zip(indices, errors):\n",
        "            self.priorities[i] = abs(e) + offset"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "XKIXlcQSqsMN",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "class DoubleDQNAgent():\n",
        "    def __init__(self, env):\n",
        "        self.state_dim = env.observation_space.shape\n",
        "        self.action_size = env.action_space.n\n",
        "        self.q_network = QNetwork(self.state_dim, self.action_size)\n",
        "        self.replay_buffer = PrioritizedReplayBuffer(maxlen=100000)\n",
        "        self.gamma = 0.97\n",
        "        self.eps = 1.0\n",
        "        \n",
        "        self.sess = tf.Session()\n",
        "        self.sess.run(tf.global_variables_initializer())\n",
        "        \n",
        "    def get_action(self, state):\n",
        "        q_state = self.q_network.get_q_state(self.sess, [state])\n",
        "        action_greedy = np.argmax(q_state)\n",
        "        action_random = np.random.randint(self.action_size)\n",
        "        action = action_random if random.random() < self.eps else action_greedy\n",
        "        return action\n",
        "    \n",
        "    def train(self, state, action, next_state, reward, done, use_DDQN=True, a=0.0):\n",
        "        self.replay_buffer.add((state, action, next_state, reward, done))\n",
        "        (states, actions, next_states, rewards, dones), importance, indices = self.replay_buffer.sample(50, priority_scale=a)\n",
        "        \n",
        "        next_actions = np.argmax(self.q_network.get_q_state(self.sess, next_states, use_target=False), axis=1)\n",
        "        q_next_states = self.q_network.get_q_state(self.sess, next_states, use_target=use_DDQN)\n",
        "        q_next_states[dones] = np.zeros([self.action_size])\n",
        "        q_next_states_next_actions = q_next_states[np.arange(next_actions.shape[0]), next_actions]\n",
        "        q_targets = rewards + self.gamma * q_next_states_next_actions\n",
        "        errors = self.q_network.update_model(self.sess, states, actions, q_targets, importance**(1-self.eps))\n",
        "        \n",
        "        self.replay_buffer.set_priorities(indices, errors)\n",
        "        \n",
        "        if done: self.eps = max(0.1, 0.99*self.eps)\n",
        "    \n",
        "    def __del__(self):\n",
        "        self.sess.close()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "zv9Amjj4qsMQ",
        "colab_type": "code",
        "outputId": "3e61344f-d87a-41e6-d28c-4ca3511ef4df",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 187
        }
      },
      "cell_type": "code",
      "source": [
        "num_runs = 10\n",
        "run_rewards = []\n",
        "\n",
        "for n in range(num_runs):\n",
        "    print(\"Run {}\".format(n))\n",
        "    ep_rewards = []\n",
        "    agent = None\n",
        "    agent = DoubleDQNAgent(env)\n",
        "    num_episodes = 200\n",
        "\n",
        "    for ep in range(num_episodes):\n",
        "        state = env.reset()\n",
        "        total_reward = 0\n",
        "        done = False\n",
        "        while not done:\n",
        "            action = agent.get_action(state)\n",
        "            next_state, reward, done, info = env.step(action)\n",
        "            agent.train(state, action, next_state, reward, done, a=(n%2==0)*0.7)\n",
        "            #env.render()\n",
        "            total_reward += reward\n",
        "            state = next_state\n",
        "\n",
        "        ep_rewards.append(total_reward)\n",
        "        #print(\"Episode: {}, total_reward: {:.2f}\".format(ep, total_reward))\n",
        "        \n",
        "    run_rewards.append(ep_rewards)"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Run 0\n",
            "Run 1\n",
            "Run 2\n",
            "Run 3\n",
            "Run 4\n",
            "Run 5\n",
            "Run 6\n",
            "Run 7\n",
            "Run 8\n",
            "Run 9\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "JU1OmrO0uHpO",
        "colab_type": "code",
        "outputId": "d8cb4c76-6112-4327-f334-6e9669e0b990",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 311
        }
      },
      "cell_type": "code",
      "source": [
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline\n",
        "\n",
        "for n, ep_rewards in enumerate(run_rewards):\n",
        "    x = range(len(ep_rewards))\n",
        "    cumsum = np.cumsum(ep_rewards)\n",
        "    avgs = [cumsum[ep]/(ep+1) if ep<100 else (cumsum[ep]-cumsum[ep-100])/100 for ep in x]\n",
        "    col = \"r\" if (n%2==0) else \"b\"\n",
        "    plt.plot(x, avgs, color=col, label=n)\n",
        "    \n",
        "plt.title(\"Prioritized Replay performance\")\n",
        "plt.xlabel(\"Episode\")\n",
        "plt.ylabel(\"Last 100 episode average rewards\")\n",
        "plt.legend()"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.legend.Legend at 0x7f52d2b3e5c0>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 9
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "_UBHQMHzqsMU",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "env.close()"
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}